require "Common/functions"
--todo 优化：
--这个代码可能还有别的需求，但是就目前看，就是缓存了三个参数，然后参数写到C#里，每次都去C#取值。
--先都放Lua里

ShaderEffectManager = {};
local this = ShaderEffectManager;

--通用的
local mpb = nil;

--
local hitFlashColor = Color(1, 1, 1, 0.5);
local hitFlashCountMax = 2;
local hitFlashInterval = 0.1;

--todo 优化：
--你可以使用静态方法:Shader.PropertyToID(string)去缓存一个整数ID

function ShaderEffectManager.init()
    --mpb = MaterialPropertyBlock:new();
    if not mpb then
        mpb = MaterialPropertyBlock();

        --hitFlashColor = Color(1, 0, 0, 1);

        ----dev
        --local go = GameObject('EffectDev');
        --this.effectDev = go:AddComponent(typeof(EffectDev));
        --this.effectDev.hitFlashColor = hitFlashColor;
    end
end


function ShaderEffectManager.getMaterialPropertyBlock()
    return mpb;
end

--
function ShaderEffectManager.getHitFlashColor()
    return hitFlashColor;

    --return this.effectDev.hitFlashColor;

end

function ShaderEffectManager.getHitFlashCountMax()
    return hitFlashCountMax;

    --Util.LogError('effectDev '..decodeJsonStrToTabel(this.effectDev));
    --Util.LogError('effectDev '..getJsonStr(this.effectDev));
    --Util.LogError('effectDev '..this.effectDev.hitFlashCountMax);

    --return this.effectDev.hitFlashCountMax;
end

function ShaderEffectManager.getHitFlashInterval()
    return hitFlashInterval;

    --return this.effectDev.hitFlashInterval;
end





--
function ShaderEffectManager.destroy()
    this.clearAllEff();
end


function ShaderEffectManager.clearAllEff()
    --for k,v in pairs(effectPool) do
    --    local eff = v:pop_front();
    --    while eff ~= nil do
    --        destroy(eff);
    --        eff = v:pop_front();
    --    end
    --end
    --effectPool = {};
end

